//引入
import axios from 'axios'
import router from '../router'
import { MessageBox, Message } from 'element-ui'

//是否处于弹窗中
var isInAlert = false

//创建实例
const service = axios.create({
    //默认配置
    baseURL: 'http://127.0.0.1:8089',
    timeout: 20 * 1000, //超时时间
})


// 请求拦截器
service.interceptors.request.use(function (config) {
    // 在发送请求之前做些什么
    config.headers['Authorization'] = window.localStorage.getItem("_token") || ""
    config.headers['X-Requested-With'] = 'XMLHttpRequest' //Ajax 请求
    return config
}, function (error) {
    // 对请求错误做些什么
    return Promise.reject(error)
})

// 响应拦截器
service.interceptors.response.use(function (response) {
    // 对响应数据做点什么
    return response
}, function (error) {
    // 对响应错误做点什么
    if(error.status != 200){
        //接口返回信息
        var data = error.response.data
        // 未登陆或者登陆过期，跳转登陆页面
        if(error.status == 401 && !isInAlert){
            //弹窗状态(弹窗中)
            isInAlert = true
            //提示
            MessageBox.alert(data.msg, '提示', {
                confirmButtonText: '确定',
                callback: action => {
                    console.log('action',action)
                    //移除本地token
                    window.localStorage.setItem("_token", "")
                    //跳转登录页面
                    router.replace({ name: 'login' })
                    //弹窗状态(关闭中)
                    isInAlert = false
                }
            })
        }else{
            console.log(data.msg)
            Message.error(data.msg)
        }
        
    }
    return Promise.reject(error)
})

//暴漏这个实例
export default {
    get: async(option = {}) => {
        const res = await service({ method: 'GET', ...option })
        return res.data || {}
    },
    post: async(option= {}) => {
        const res = await service({ method: 'POST', ...option })
        return res.data || {}
    },
}